﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using JudoTec.forms;


namespace JudoTec
{
    public partial class Editar_Usuario : Form
    {
        MySqlConnection conexion;
        MySqlDataAdapter adaptador;
        DataTable tabla;
        System.Data.DataSet datos;
        MySqlCommand comando;

        NuevoParticipante nuevo_participante;

        public Editar_Usuario()
        {
            InitializeComponent();

            // Conexion a la BD
            conexion = cls.ConexionMySQL.IniciarConexion();
            actualizar_datagrid();

        }

        private void actualizar_datagrid()
        {
            // Consulta SQL en cadena string
            string consulta = "SELECT * FROM participantes";
            // Relacionamos la consulta con la conexion mediante el objeto comando
            comando = new MySqlCommand(consulta, conexion);
            // Creamos un DataSet que contendra los datos de la BD en local
            datos = new DataSet();
            // El adaptador será el puente de union entre la BD y en DataSet
            adaptador = new MySqlDataAdapter();
            // Cargamos el comando en el adapatador
            adaptador.SelectCommand = comando;
            // Aqui es donde se realiza la consulta SQL y la guardamos en el dataset, 
            //dentro de un datatable llamado miParticipantes (Un dataset es un cto de dataTables)
            adaptador.Fill(datos, "misParticipantes");
            // Guardamos la nueba tabla de nuestro DataSet en un dataTable
            tabla = datos.Tables["misParticipantes"];
            // Cargamos nuestro DataTable "Tabla" en el datagridview
            dataGridView1.DataSource = tabla;
        }

      /* private void Add_Usuario_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'judotecDataSet.participantes' Puede moverla o quitarla según sea necesario.
            this.participantesTableAdapter.Fill(this.judotecDataSet.participantes);

        } */

        // Boton que me guarda las modificaciones realizadas en el programa
        private void btn_Guardar_Click(object sender, EventArgs e)
        {

            //Para que se genere automaticamente la sentencia update
            MySqlCommandBuilder builder = new MySqlCommandBuilder(adaptador);
            try
            {
                if (tabla.GetChanges() != null)
                    adaptador.Update(tabla.GetChanges());
                MessageBox.Show("Datos Actualizados con Exito", "Correcto");
            }
            catch (MySqlException)
            {
                MessageBox.Show("Ocurrio un error al Guardar los Datos, compruebe si ha insertado un Participante ya existente", "Error");
            }
            actualizar_datagrid();
        }

        // Boton para cerrar la ventana
        private void btn_Cerrar_Click(object sender, EventArgs e)
        {
            this.Close();
            conexion.Close();
        }

        private void Editar_Usuario_Load(object sender, EventArgs e)
        {

          /*  // TODO: esta línea de código carga datos en la tabla 'judotecDataSet.participantes' Puede moverla o quitarla según sea necesario.
            this.participantesTableAdapter.Fill(this.judotecDataSet.participantes);*/
            /* // TODO: esta línea de código carga datos en la tabla 'judotecDataSet1.participantes' Puede moverla o quitarla según sea necesario.
             this.participantesTableAdapter.Fill(this.judotecDataSet1.participantes);*/
            // Con este metodo añado una columna de botones
            DataGridViewButtonColumn colBotones = new DataGridViewButtonColumn();
            colBotones.Name = "colBotones";
            colBotones.HeaderText = "";
            colBotones.Width = 22;
            dataGridView1.Columns.Add(colBotones);
            //GRacias a esto podremos pintar encima de la columna apra pode rponer texto o imagen en ella
            dataGridView1.CellPainting += new DataGridViewCellPaintingEventHandler(dataGridView1_CellPainting);
        }

        // Boton de Busqueda de datos
        /*
        private void btn_buscar_Click(object sender, EventArgs e)
        {
            // FORMA DE HACERLO 1
            // DataView dataView = datos.Tables[0].DefaultView;
            // dataView.RowFilter = "DNI_Participante = '11111111a'";
            ((DataTable)this.dataGridView1.DataSource).DefaultView.RowFilter = "DNI_Participante ='" + this.tb_busqueda.Text+"'";

        }*/

        // Busqueda Dinamica de los Datos en el Text Box
        private void tb_dni_TextChanged(object sender, EventArgs e)
        {
            if (rb_DNI.Checked)
                datos.Tables[0].DefaultView.RowFilter = ("DNI_Participante like '%" + this.tb_busqueda.Text + "%'");
            else if (rb_Nombre.Checked)
                datos.Tables[0].DefaultView.RowFilter = ("Nombre like '%" + this.tb_busqueda.Text + "%'");
            else if (rb_Apellidos.Checked)
                datos.Tables[0].DefaultView.RowFilter = ("Apellidos like '%" + this.tb_busqueda.Text + "%'");
            else if (rb_Edad.Checked) // Aqui se hace necesario hacer una conversion a string para la consulta
                datos.Tables[0].DefaultView.RowFilter = ("CONVERT(Edad , 'System.String') like '%" + this.tb_busqueda.Text + "%'");
            else if (rb_Peso.Checked)
                datos.Tables[0].DefaultView.RowFilter = ("CONVERT (Peso,'System.String') like '%" + this.tb_busqueda.Text + "%'");
            else if (rb_Sexo.Checked)
                datos.Tables[0].DefaultView.RowFilter = ("Sexo like '%" + this.tb_busqueda.Text + "%'");
        }

        // Metodo del boton add_participante
        private void button1_Click(object sender, EventArgs e)
        {
            //NuevoParticipante nuevo_participante = new NuevoParticipante(dataGridView1);
            nuevo_participante = new NuevoParticipante(dataGridView1);
            nuevo_participante.ShowDialog(this);
            //Al cerrar el form de nuevo participante actualizo mi datagrid
            actualizar_datagrid();
        }

        // Metodo que me controla cuando hago click en una celda del data grid 
        // En este caso estoy controlando la comuna de botones
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // En esta condicion controlo que se este haciendo clik en la columna 8, que haya registro a borrar y que no se inytente borrar el ultimo registro que siempre esta vacio.
            if (((System.Windows.Forms.DataGridView)(sender)).CurrentCell.ColumnIndex == 8 && dataGridView1.RowCount > 1 && ((System.Windows.Forms.DataGridView)(sender)).CurrentCell.RowIndex != (dataGridView1.RowCount - 1))
            {
                dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);

                //Para que se genere automaticamente la sentencia update
                MySqlCommandBuilder builder = new MySqlCommandBuilder(adaptador);
                try
                {
                    //Para que se genere automaticamente la sentencia update
                    adaptador.Update(tabla.GetChanges());
                    MessageBox.Show("Registro Borrado", "Correcto");
                }
                catch (MySqlException)
                {
                    MessageBox.Show("Error al Borrar el Registro", "Error");
                }
                actualizar_datagrid();
            }
        }
      


        void dataGridView1_CellPainting(object sender,DataGridViewCellPaintingEventArgs e)
        {
            if (e.ColumnIndex == -1 || e.RowIndex == -1)
                return;

            if (dataGridView1.Columns[e.ColumnIndex].Name == "colBotones")
            {
                e.Paint(e.CellBounds, DataGridViewPaintParts.All);
                // Dibuja Rectangulo
                //e.Graphics.FillRectangle(Brushes.Magenta, e.CellBounds.Left + 10, e.CellBounds.Top + 5, 10, 10);
                //Escribe Texto
                //e.Graphics.DrawString("Edit", new Font("Verdana", 8), new SolidBrush(Color.Black), e.CellBounds.Left + 3, e.CellBounds.Top + 3);
                Icon icoAtomico = new Icon(Environment.CurrentDirectory + @"..\..\..\Resources\delete.ico");
               // e.Graphics.DrawIcon(icoAtomico, e.CellBounds.Left + 3, e.CellBounds.Top + 3);
                e.Graphics.DrawIcon(icoAtomico, e.CellBounds.Left + 2, e.CellBounds.Top + 2);
                e.Handled = true;
            }
        }
    }
}
